﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using com.clinica.business.BE.actcliente;
using com.clinica.business.BE.gesliq;
using com.clinica.business.BE.comun;
using LiclUtil;
using LiclCliente.Views;
using System.Text;

namespace wesiGestClinica.actcliente
{
    public partial class FormsManCliente : Shared.SMGPaseBase, ILiclManCliente
    {
        private LiclManClientePresenter oPresenter = new LiclManClientePresenter();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                oPresenter.View = this;
                this.Master.TituloModulo = "Mantenimiento de Clientes";
                CargarTipoCliente();
                CargarTipoPersona();
                CargarTipoDocIdentidad();
                CargarDistrito();
                IniciarControles();
                CargarUrl();
            }
            Master.OcultarMensaje();
            oPresenter.View = this;
        }
        protected override void DefineHandlers()
        {
            UCBarra1.img_Grabar.Click += new ImageClickEventHandler(img_Grabar_Click);
            UCBarra1.img_Grabar.Attributes.Add("onClick", "if(!window.confirm(' Desea Guardar los datos del Cliente?? '))return false;");
            UCBarra1.img_Volver.Click += new ImageClickEventHandler(img_Volver_Click);
            UCBarra1.img_Grabar.Visible = true;
            UCBarra1.img_Volver.Visible = true;

        }
       
        #region Eventos
        void img_Volver_Click(object sender, ImageClickEventArgs e)
        {
            Retornar();
        }
        void img_Grabar_Click(object sender, ImageClickEventArgs e)
        {
            int Accion = 0;
            if (Request.QueryString["action"].ToString().Trim() == "2")
                Accion = 2;
            if (Request.QueryString["action"].ToString().Trim() == "1")
                Accion = 1;
            if (validarCampos())
            {
                ClienteBE oCliente = new ClienteBE();
                oCliente.Tipocliente= int.Parse(rbl_TipoCliente.SelectedValue);
                oCliente.Tipopersona= int.Parse(rbl_TipoPersona.SelectedValue);
                oCliente.Razonsocial= txt_RazonSocial.Text.Trim();
                oCliente.Numerodocidentidad=txt_Numerodocidentidad.Text.Trim();
                oCliente.Direccion = txt_Direccion.Text.Trim();
                oCliente.Email = txt_Email.Text.Trim();
                oCliente.Telefono1 = txt_Telefono1.Text.Trim();
                oCliente.Telefono2 = txt_Telefono2.Text.Trim();
                oCliente.Fax = txt_Fax.Text.Trim();
                oCliente.Tipodocidentidad = int.Parse(cbo_Tipodocidentidad.SelectedValue);
                oCliente.Coddistrito= int.Parse(cbo_Distrito.SelectedValue);
                oCliente.Estado = int.Parse(txt_CodEstado.Text);
                
                if (Request.QueryString["action"].ToString().Trim() == "2")
                {
                    oCliente.Codcliente = int.Parse(txt_Codigo.Text);
                }
                oPresenter.onGrabar_Cliente(Accion, oCliente);
            }

        }
        #endregion
        #region Metodos Propios
        private void Retornar()
        {
            if (Request.QueryString["action"].ToString().Trim() != string.Empty)
            {
                if (Request.QueryString["action"].ToString().Trim() != "3")
                    Response.Redirect("FormsConBandejaCliente.aspx?action=0");
                else
                    Response.Redirect("FormsConBandejaCliente.aspx?action=1");
            }
        }
        private bool validarCampos()
        {
            bool booVal = true;
            StringBuilder strError = new StringBuilder();
            #region Cabecera
            if (rbl_TipoPersona.SelectedValue == string.Empty)
            {
                booVal = false;
                strError.Append(" Debe seleccionar un tipo de Persona");
            }
            if (rbl_TipoCliente.SelectedValue == string.Empty)
            {
                booVal = false;
                strError.Append(" Debe seleccionar un tipo de Cliente");
            }
            if (txt_RazonSocial.Text.Trim() == string.Empty)
            {
                booVal = false;
                strError.Append(" Debe ingresar un Nombre/Razon Social ");
            }
            if (cbo_Tipodocidentidad.SelectedValue.ToString() == string.Empty)
            {
                booVal = false;
                strError.Append(" Debe Ingresar un tipo de documento de identidad valido ");
            }
            if (txt_Numerodocidentidad.Text == string.Empty)
            {
                booVal = false;
                strError.Append(" Debe Ingresar un numero de identidad valido ");
            }
            if (rbl_TipoPersona.SelectedValue == "2")//juridica
            {
                if (cbo_Tipodocidentidad.SelectedValue != "3") { //ruc
                    booVal = false;
                    strError.Append(" Para Persona Juridica, debe seleccionar como tipo de Documento de identidad el RUC ");
                }
            }else if (rbl_TipoPersona.SelectedValue == "1")//Natural
            {
                if (cbo_Tipodocidentidad.SelectedValue == "3")
                {
                    booVal = false;
                    strError.Append(" Para Persona Natural, no se puede seleccionar como tipo de Documento de identidad el RUC ");
                }
            }
            #endregion
            if (!booVal)
            {
                Master.MostrarMensaje(strError.ToString(), TipoMensaje.Error);
            }
            return booVal;
        }
        private void CargarTipoPersona()
        {
            com.clinica.business.BE.comun.ParametrosBE oParm = new com.clinica.business.BE.comun.ParametrosBE();
            oParm.NombreTabla = "TIPPERSONA";
            oPresenter.onObterner_Tabla(oParm);
        }
        private void CargarTipoCliente()
        {
            com.clinica.business.BE.comun.ParametrosBE oParm = new com.clinica.business.BE.comun.ParametrosBE();
            oParm.NombreTabla = "TIPCLIENTE";
            oPresenter.onObterner_TablaTipoCliente(oParm);
        }
        private void CargarTipoDocIdentidad()
        {
            com.clinica.business.BE.comun.ParametrosBE oParm = new com.clinica.business.BE.comun.ParametrosBE();
            oParm.NombreTabla = "TIPDOCIDEN";
            oPresenter.onObterner_TablaTipoDocIdent(oParm);
        }
        private void CargarDistrito()
        {
            com.clinica.business.BE.comun.ParametrosBE oParm = new com.clinica.business.BE.comun.ParametrosBE();
            oParm.NombreTabla = "DISTRITO";
            oPresenter.onObterner_TablaDistrito(oParm);
        }


        private void IniciarControles()
        {
            if (rbl_TipoPersona.Items.Count > 0) rbl_TipoPersona.Items[0].Selected = true;
            if (rbl_TipoCliente.Items.Count > 0) rbl_TipoCliente.Items[0].Selected = true;
            txt_DesEstado.Text = string.Empty;
            txt_RazonSocial.Text = string.Empty;
            txt_RazonSocial.Text = string.Empty;
            cbo_Tipodocidentidad.SelectedValue = "";
            txt_Numerodocidentidad.Text = string.Empty;
            txt_Direccion.Text = string.Empty;
            txt_Email.Text = string.Empty;
            txt_Telefono1.Text = string.Empty;
            txt_Telefono2.Text = string.Empty;
            txt_Fax.Text = string.Empty;
            txt_CodEstado.Text = "1";
            //txt_Departamento.Text = string.Empty;
            //txt_Provincia.Text = string.Empty;
            cbo_Distrito.SelectedValue = "";
            cbo_Tipodocidentidad.SelectedValue= "";

            UCBarra1.img_Grabar.Visible = true;
            UCBarra1.img_Volver.Visible = true;

        }
        private void CargarUrl()
        {
            string action = string.Empty;
            string Codcliente = string.Empty;
            try
            {
                action = Request.QueryString["action"].ToString().Trim();
                Codcliente = Request.QueryString["Codcliente"].ToString().Trim();
            }
            catch (Exception)
            {


            }
            switch (action)
            {
                case "1":
                    Session.Add("Action", "new");
                    EstablecerModos(1);
                    break;
                case "2":
                    Session.Add("Action", "update");
                    EstablecerModos(2);
                    ClienteBE oPla = new ClienteBE();
                    oPla.Codcliente = int.Parse(Codcliente);
                    oPresenter.onObtener_Cliente(oPla);
                    EstablecerModos(2);
                    break;
                default:
                    break;
            }
        }
        private void EstablecerModos(int action)
        {
            switch (action)
            {
                case 1:
                    rbl_TipoPersona.Enabled =
                    rbl_TipoCliente.Enabled =
                    txt_RazonSocial.Enabled =
                    txt_Numerodocidentidad.Enabled =
                    txt_Direccion.Enabled =
                    txt_Email.Enabled =
                    txt_Telefono1.Enabled =
                    txt_Telefono2.Enabled =
                    txt_Fax.Enabled =
                    cbo_Distrito.Enabled=
                    cbo_Tipodocidentidad.Enabled = true;
                    //img_Buscar.Enabled =
                    UCBarra1.img_Volver.Enabled =
                    UCBarra1.img_Grabar.Enabled = true;
                    break;
                case 2:
                    rbl_TipoPersona.Enabled =
                    rbl_TipoCliente.Enabled =
                    txt_RazonSocial.Enabled =
                    txt_Numerodocidentidad.Enabled =
                    txt_Direccion.Enabled =
                    txt_Email.Enabled =
                    txt_Telefono1.Enabled =
                    txt_Telefono2.Enabled =
                    cbo_Distrito.Enabled =
                    txt_Fax.Enabled =
                    cbo_Tipodocidentidad.Enabled = true;

                    break;
                default:
                    rbl_TipoPersona.Enabled =
                    rbl_TipoCliente.Enabled =
                    txt_RazonSocial.Enabled =
                    txt_Numerodocidentidad.Enabled =
                    txt_Direccion.Enabled =
                    txt_Email.Enabled =
                    txt_Telefono1.Enabled =
                    txt_Telefono2.Enabled =
                    txt_Fax.Enabled =
                    cbo_Distrito.Enabled =
                    cbo_Tipodocidentidad.Enabled =
                    UCBarra1.img_Grabar.Enabled = false;
                    UCBarra1.img_Volver.Enabled = true;
                    break;
            }
        }

        #endregion 

        #region ILiclCliente Members
        public void MostrarMensajeError(string Mensaje)
        {
            Master.MostrarMensaje(Mensaje.Trim(), TipoMensaje.Error);
        }
        public void ObtenerTabla(List<com.clinica.business.BE.comun.ParametrosBE> lst)
        {
            rbl_TipoPersona.DataSource = lst;
            rbl_TipoPersona.DataValueField = "Codigo";
            rbl_TipoPersona.DataTextField = "DescripcionCorta";
            rbl_TipoPersona.DataBind();
        }
        public void ObtenerTablaTipCliente(List<com.clinica.business.BE.comun.ParametrosBE> lst)
        {
            rbl_TipoCliente.DataSource = lst;
            rbl_TipoCliente.DataValueField = "Codigo";
            rbl_TipoCliente.DataTextField = "DescripcionCorta";
            rbl_TipoCliente.DataBind();
        }
        public void ObtenerTablaTipDocIden(List<com.clinica.business.BE.comun.ParametrosBE> lst)
        { 
            cbo_Tipodocidentidad.DataSource = lst;
            cbo_Tipodocidentidad.DataValueField = "Codigo";
            cbo_Tipodocidentidad.DataTextField = "DescripcionCorta";
            cbo_Tipodocidentidad.DataBind();
        }
        public void ObtenerTablaDistrito(List<com.clinica.business.BE.comun.ParametrosBE> lst)
        {
            cbo_Distrito.DataSource = lst;
            cbo_Distrito.DataValueField = "Codigo";
            cbo_Distrito.DataTextField = "DescripcionCorta";
            cbo_Distrito.DataBind();
        }
        public void ObtenerCliente(List<ClienteBE> lst)
        {
            if (lst.Count > 0)
            {
                txt_Codigo.Text = Request.QueryString["Codcliente"].ToString().Trim();
                rbl_TipoPersona.SelectedValue = lst[0].Tipopersona.ToString();
                rbl_TipoCliente.SelectedValue = lst[0].Tipocliente.ToString();
                txt_RazonSocial.Text = lst[0].Razonsocial;
                txt_CodEstado.Text = lst[0].Estado.ToString();
                txt_DesEstado.Text = lst[0].DesEstado;
                txt_Numerodocidentidad.Text = lst[0].Numerodocidentidad;
                cbo_Tipodocidentidad.SelectedValue = lst[0].Tipodocidentidad.ToString();
                txt_Direccion.Text = lst[0].Direccion;
                txt_Email.Text = lst[0].Email;
                txt_Telefono1.Text = lst[0].Telefono1;
                txt_Telefono2.Text = lst[0].Telefono2;
                txt_Fax.Text = lst[0].Fax;
                //txt_Departamento.Text = lst[0].Coddepartam.ToString() ;
                //txt_Provincia.Text = lst[0].Codprovincia.ToString();
                cbo_Distrito.SelectedValue = lst[0].Coddistrito.ToString();

                ListaCliente = lst;
                //PacienteBE oPac = new PacienteBE();
                //oPac.Codigo = lst[0].CodigoPaciente;
                //oPresenter.onBuscar_Paciente_Detalle(oPac);
            }
            else
            {
            }
        }

        public void MantenimientoCliente(int Codcliente)
        {
            Session.Add("Action", "update");
            EstablecerModos(0);
            ClienteBE oTar = new ClienteBE();
            oTar.Codcliente = Codcliente;
            oPresenter.onObtener_Cliente(oTar);
            txt_Codigo.Text = oTar.Codcliente.ToString();
            if (Request.QueryString["action"].ToString().Trim() == "1")
                ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se registró El Cliente " + Codcliente.ToString() + "');", true);
            else if (Request.QueryString["action"].ToString().Trim() == "2")
                ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se Modificó El Cliente " + Codcliente.ToString() + "');", true);

        }
        #endregion
        public List<ClienteBE> ListaCliente
        {
            get { return (List<ClienteBE>)Session["Cliente"]; }
            set { Session["Cliente"] = value; }
        }
    }
}
